package util;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import dto.DataTableQO;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class DataTableUtil
{
  public static Map<String, Object> covertJsonStringToHashMap(String jsonParam)
  {
    JSONArray jsonArray = JSONArray.parseArray(jsonParam);
    Map<String, Object> map = new HashMap();
    for (int i = 0; i < jsonArray.size(); i++) {
      JSONObject jsonObj = jsonArray.getJSONObject(i);
      map.put(jsonObj.getString("name"), jsonObj.get("value"));
    }
    return map;
  }
  
  public static DataTableQO getDataTableParameterByJsonParam(String jsonParam)
  {
    Map<String, Object> map = covertJsonStringToHashMap(jsonParam);
    int sEcho = ((Integer)map.get("sEcho")).intValue();
    int iDisplayStart = ((Integer)map.get("iDisplayStart")).intValue();
    int iDisplayLength = ((Integer)map.get("iDisplayLength")).intValue();
    int iColumns = ((Integer)map.get("iColumns")).intValue();
    int iSortingCols = ((Integer)map.get("iSortingCols")).intValue();
    
    List<String> mDataProps = new ArrayList();
    List<Boolean> bSortables = new ArrayList();
    for (int i = 0; i < iColumns; i++) {
      try {
        String dataProp = (String)map.get("mDataProp_" + i);
        mDataProps.add(dataProp);
      } catch (Exception e) {
        e.printStackTrace();
      }
      Boolean sortable = (Boolean)map.get("bSortable_" + i);
      bSortables.add(sortable);
    }
    
    List<Integer> iSortCols = new ArrayList();
    List<String> sSortDirs = new ArrayList();
    List<String> iSortColsName = new ArrayList();
    for (int i = 0; i < iSortingCols; i++) {
      Integer sortCol = (Integer)map.get("iSortCol_" + i);
      String sortColName = (String)mDataProps.get(sortCol.intValue());
      String sortDir = (String)map.get("sSortDir_" + i);
      iSortCols.add(sortCol);
      sSortDirs.add(sortDir);
      iSortColsName.add(sortColName);
    }
    
    return new DataTableQO(sEcho, iDisplayStart, iDisplayLength, iColumns, mDataProps, bSortables, iSortingCols, iSortCols, sSortDirs, iSortColsName);
  }
}
